package basics

import (
	"flag"
	"fmt"
)

// FlagArgs 使用os包从命令行获取参数
// 示例命令：go run main/mian.go name=gaox age=26 motto=Bright\ without\ being\ dazzling.
func FlagArgs() {
	//flag.Xxxx(name, value, usage)
	//第一个参数: 命令行参数名称
	//第二个参数: 命令行参数对应的默认值
	//第三个参数: 命令行参数对应的说明

	// 1.设置命令行参数
	// flag.String 对应方法返回的都是指针类型, 所以使用时必须通过指针访问
	name := flag.String("name", "gaox", "请输入姓名：")
	age := flag.Int("age", 26, "请输入年龄：")
	// flag.StringVar 指向变量
	var motto string
	flag.StringVar(&motto, "motto", "Bright without being dazzling.", "请输入座右铭：")

	// 2.将命令行参数解析到注册的参数
	flag.Parse()

	// 3.使用命令行参数
	fmt.Printf("姓名 \t= %s\n", *name)
	// %03d 其中0的作用是向前补补
	fmt.Printf("年龄 \t= %03d\n", *age)
	fmt.Printf("座右铭 \t= %s\n", motto)

}
